package com.wushuu.ce.application;

import android.app.Application;

import java.util.LinkedList;
import java.util.List;
import java.util.Locale;


import android.app.Activity;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.DisplayMetrics;

import com.wushuu.ce.exception.CrashHandler;

import org.xutils.BuildConfig;
import org.xutils.x;

/**
 * ============================================================
 * <br/>
 * 作 者 :        xyb
 * <br/>
 * 版 本 :        1.0
 * <br/>
 * 创建日期 ：     2016-05-11 下午12:17
 * <br/>
 * 描 述 ：        全局Application
 * <br/>
 * 修订历史 ：
 * <br/>
 * ============================================================
 **/
public class SApplication extends Application{
    private static SApplication instance;
    //管理系统中activity的List
    private List<Activity> activitys = new LinkedList<Activity>();

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        setSystemLanguage();

        x.Ext.init(this);
        x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.

        //在这里为应用设置异常处理程序，然后我们的程序才能捕获未处理的异常
        CrashHandler crashHandler = CrashHandler.getInstance();
        crashHandler.init(getApplicationContext());
    }

    /***
     * 把Activity添加到list中
     * @param ac 要添加的activity
     */
    public void addActivity(Activity ac){
        activitys.add(ac);
    }

    /***
     * 从list中删除activity
     * @param ac 要删除的activity
     */
    public void deleteActivity(Activity ac){
        if(activitys.contains(ac)){
            activitys.remove(ac);
        }
    }

    /***
     * 退出系统
     */
    public void exitSystem(){
        for(Activity ac : activitys){
            ac.finish();
        }
        System.exit(0);
    }

    /*****
     * 设置系统语言
     */
    private void setSystemLanguage(){
        Resources resources = getResources();
        Configuration config = resources.getConfiguration();//获得设置对象
        DisplayMetrics dm = resources .getDisplayMetrics();//获得屏幕参数：主要是分辨率，像素等。
        config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文
        resources.updateConfiguration(config, dm);
    }

    /***
     * 获得应用程序Application
     * @return 应用程序Application
     */
    public static SApplication getInstance(){
        return instance;
    }
}
